/**mildPassVal:先决判断*/
function pre_judgment(mpv){
	
	/*Step1 判断是否支持jQuery*/
	try{
		$(document);
	}catch(e){
		throw new Error('您可能没有引入jQuery插件!');
	}
	
	/*Step2 判断是否支持Cookie*/
	var result=false;
    if(navigator.cookiesEnabled) return true;
    document.cookie = "testcookie=yes;";
    var cookieSet = document.cookie;
    if (cookieSet.indexOf("testcookie=yes") > -1) result=true;
    document.cookie = "";
    if(!result) return ('您的浏览器不支持Cookie!'); 
	
	/*Step3 判断mpv参数是否为空*/
	if(''==mpv){
		return ('缺少必要条件[mpv]!')
	}
	
	/*Step4 SUCCESS*/
	return 'SUCCESS';
}

/**mildPassVal:持久化值*/
function persistentValue(mpv,timeOut,default1,default12){
	
	/*Step1先决判断*/
	if('SUCCESS' != pre_judgment(mpv)){
		throw new Error(pre_judgment);
	}else{
		/*如果timeOut参数为空,设置默认值为2(小时)*/
		timeOut = ''==timeOut?'2':timeOut;
	}
	
	/*Step2：抓取带有mpv标志的元素*/
	var str = $('*[mpv='+mpv+']');
	
	var rs = "";
	/*Step3：堆叠*/
	for(var i=0;i<str.length;i++){
		var item ='';
		var flag = true;
		if('checkbox'==str[i].type || 'radio'==str[i].type){
			item = $('input[name='+str[i].name+'][value='+str[i].value+'][checked]').val();
			if(undefined==item || null==item|| ''==item){
				continue;
			}
			flag = false;
		}else{
			item = str[i].value;
		}
		var key = flag ? str[i].id : str[i].name;
		rs += ","+key+"[+]"+item;
	}
	rs = rs.substring(1);
	/*Step4: 持久化*/
	writeCookie('mild',rs,timeOut);
}

/**mildPassVal:解析值*/
function analyzeValue(isShow,plugins){
	
	if(''==isShow) return;
	
	/*获取持久化数据*/
	var str = readCookie('mild');
	/*分解持久化数据*/
	var array = str.split(',');
	/*第一次遍历持久化数据*/
	for(var i=0;i<array.length;i++){
		/*再次分解持久化数据*/	
		var obj = array[i].split('[+]');
		/*得到持久化数据*/
		var id=obj[0];
		var value = obj[1];
		
		/*获取对应的元素*/
		var dom = document.getElementById(id);
		
		/*如果使用ById方式没有取得元素*/
		if(null == dom || undefined==dom || ''==dom){
			/*使用ByName方法取得元素(如果是数组取得第一个)*/
			var temp  = document.getElementsByName(id);
			dom = temp[0];
			/*如果还没有取得元素，跳出本次循环*/
			if(null == dom || undefined==dom || ''==dom) continue;
		}
		if('INPUT'==dom.tagName){
			/*如果是INPUT对象*/
			if('text'==dom.type){
				/*如果是text类型*/
				$(dom).val(value);	
			}else if('checkbox'==dom.type || 'radio'==dom.type){
				/*如果是checkbox,radio类型*/
				$('input[type='+dom.type+'][name='+dom.name+'][value='+value+']').attr('checked',true);
			}
		}else if('SELECT'==dom.tagName){
			/*如果是SELECT对象*/
			$(dom).find('option[value='+value+']').attr('selected',true);
		}
	}
	
	/*执行自定义方法*/
	if((null!=plugins) && (plugins instanceof Function)){
		plugins();
	}
	
}

/**mildPassVal:重置*/
function resetValue(plugins){
	/*获取持久化数据*/
	var str = readCookie('mild');
	
	/*分解持久化数据*/
	var array = str.split(',');
	/*第一次遍历持久化数据*/
	for(var i=0;i<array.length;i++){
		/*再次分解持久化数据*/	
		var obj = array[i].split('[+]');
		/*得到持久化数据*/
		var id=obj[0];
		var value = obj[1];
		/*获取对应的元素*/
		var dom = document.getElementById(id);
		
		if(dom==null) continue;
		
		if('INPUT'==dom.tagName){
			/*如果是INPUT对象*/
			if('text'==dom.type){
				/*如果是text类型*/
				$(dom).val('');	
			}else if('checkbox'==dom.type || 'radio'==dom.type){
				/*如果是checkbox,radio类型*/
				$('input[type='+dom.type+'][name='+dom.name+'][value='+value+']').attr('checked',false);
			}
		}else if('SELECT'==dom.tagName){
			/*如果是SELECT对象*/
			$(dom).find('option:first').attr('selected',true);
		}
	}
	
	/*执行自定义方法*/
	if((null!=plugins) && (plugins instanceof Function)){
		plugins();
	}
	
	/*清空cookie*/
	dropMPV();
}

/**mildPassVal:根据ID寻找对应值*/
function findValueByKey(key){
	var str = readCookie('mild');
	var array = str.split(',');
	var rs = "";
	for(var i=0;i<array.length;i++){
		var obj = array[i].split('[+]');
		var id = obj[0];
		var val = obj[1];
		if(id == key){
			rs = val;
			break;
		}
	}
	return rs;
}

/**mildPassVal:根据ID分组*/
function groupByKey(key){
	var str = readCookie('mild');
	var array = str.split(',');
	var rs = "";
	for(var i=0;i<array.length;i++){
		var obj = array[i].split('[+]');
		var id = obj[0];
		var val = obj[1];
		if(id == key){
			rs += ","+val;
		}
	}
	return rs.substring(1);
}

/**mildPassVal:删除*/
function dropMPV(){
	var date=new Date();
    date.setTime(date.getTime()-10000);
    
    writeCookie('mild','',date);
}

/**mildPassVal:Post方式提交表单*/
function mpvSubmitPost(pat,mpv,timeOut,default1,default12){
	persistentValue(mpv,timeOut,default1,default12);
	if(''!=pat){
		document.forms[0].action = pat;
	}
	document.forms[0].method = "POST";
	document.forms[0].submit();
}

/**mildPassVal:Get方式提交表单*/
function mpvSubmitGet(pat,mpv,timeOut,default1,default12){
	persistentValue(mpv,timeOut,default1,default12);
	document.forms[0].action = pat;
	document.forms[0].method = "GET";
	document.forms[0].submit();
}

/**mildPassVal:Location*/
 function mpvLocation(pat,mpv,timeOut,default1,default12){
	 persistentValue(mpv,timeOut,default1,default12);
	 window.location.href = pat;
 }

/**mildPassVal:写cookie*/
function writeCookie(name, value, hours){
  var expire = "";
  if(hours != null){
    expire = new Date((new Date()).getTime() + hours * 3600000);
    expire = "; expires=" + expire.toGMTString();
  }
  document.cookie = name + "=" + escape(value) + expire;
}

/**mildPassVal:读cookie*/
function readCookie(name){
  var cookieValue = "";
  var search = name + "=";
  if(document.cookie.length > 0){ 
    offset = document.cookie.indexOf(search);
    if (offset != -1){ 
      offset += search.length;
      end = document.cookie.indexOf(";", offset);
      if (end == -1) end = document.cookie.length;
      cookieValue = unescape(document.cookie.substring(offset, end))
    }
  }
  return cookieValue;
}